/**
 * Created by Administrator on 2018/8/28.
 */
var triArray = new Array();
var insideGrid;
var startGridTwo;
var $$scope;
var codeNow = "";
var tempOriginSelect;
// 报销费用明细
var afrColumns = [{
    id: 'trCompanyName',
    title: '报销主体公司',
    width: 150,
    type: 'string',
    columnClass: 'text-center',
}, {
    id: 'triClassName',
    title: '报销类目',
    width: 150,
    type: 'string',
    columnClass: 'text-center',
}, {
    id: 'money',
    title: '金额',
    type: 'string',
    width: 100,
    columnClass: 'text-center',
    resolution: function (value, record, column, grid, dataNo, columnNo) {
        var content = '￥' + value + '元';
        return content;
      }
}, {
    id: 'startDate',
    title: '开始日期',
    type: 'string',
    width: 100,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
    resolution: function (value, record, column, grid, dataNo, columnNo) {
        var date = new Date(record.startDate);
        var content = $.fn.dlshouwen.grid.tools.dateFormat(date, "yyyy-MM-dd");
        return content;
    }
}, {
    id: 'endDate',
    title: '结束日期',
    type: 'string',
    width: 150,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
    resolution: function (value, record, column, grid, dataNo, columnNo) {
        var date = new Date(record.endDate);
        var content = $.fn.dlshouwen.grid.tools.dateFormat(date, "yyyy-MM-dd");
        return content;
    }
}, {
    id: 'startAddr',
    title: '开始地点',
    type: 'string',
    width: 150,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
}, {
    id: 'endAddr',
    title: '结束地点',
    type: 'string',
    width: 150,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
}, {
    id: 'triNum',
    title: '原始单据数量',
    type: 'string',
    width: 100,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
}, {
    id: 'trInstruction',
    title: '费用报销明细说明',
    type: 'string',
    columnClass: 'text-left',
}, {
    id: 'operation',
    title: '操作',
    width: 280,
    type: 'string',
    columnClass: 'text-center',
    resolution: function (value, record, column, grid, dataNo, columnNo) {
        var content = '';
        content += '<button class="btn btn-xs btn-success" onclick="addPro(\'' + record.triCode + '\');"><i class="icon-plus"></i>  项目占比</button>';
        content += '  ';
        content += '<button class="btn btn-xs btn-primary" onclick="disMyModal(\'' + record.triCode + '\');"><i class="icon-eye-open"></i>  项目占比</button>';
        content += '  ';
        content += '<button class="btn btn-xs btn-info" onclick="editCC(\'' + record.triCode + '\');"><i class="fa fa-edit"></i>  编辑</button>';
        content += '  ';
        content += '<button class="btn btn-xs btn-danger" onclick="delTriItem(\'' + record.triCode + '\');"><i class="fa fa-trash-o"></i>  删除</button>';
        return content;
    }
}];
var afrOption = {
    lang: 'zh-cn',
    ajaxLoad: false,
    extraWidth: 20,
    // loadURL:'url',
    exportFileName: '报销费用明细',
    datas: [],
    columns: afrColumns,
    gridContainer: 'afrContainer',
    toolbarContainer: 'afrToolBarContainer',
    tools: '',
    pageSize: 10,
    pageSizeLimit: [10, 15, 20]
};
var nowprojectPercent;
var projIdNow;
triArray = new Array();

$$scope.trEntity = {};

$$scope.trEntity = {
    trCode: "tr-" + new Date().getTime() + Math.floor(Math.random() * 10000),
    items: triArray
};

$$scope.triPercentDis = true;

$CertusJsonAjax.ajax("openCCBXLCbsb", {
    "processInstanceId": $CertusJsonAjax.getProInstanceId(),
    "stepInstanceId": $CertusJsonAjax.getStepInstanceId()
}, function (res) {
    ;
    if (res.data) {
        $$scope.trEntity = res.data;
        if ($$scope.trEntity.travelCode && $$scope.trEntity.travelCode != "") {
            $$scope.travelCodeChange($$scope.trEntity.travelCode);
        }
        triArray = res.data.items;
        var afrOption1 = {
            lang: 'zh-cn',
            ajaxLoad: false,
            extraWidth: 20,
            // loadURL:'url',
            exportFileName: '报销费用明细',
            datas: res.data.items,
            columns: afrColumns,
            gridContainer: 'afrContainer',
            toolbarContainer: 'afrToolBarContainer',
            tools: '',
            pageSize: 10,
            pageSizeLimit: [10, 15, 20]
        };
        startGridTwo = $.fn.dlshouwen.grid.init(afrOption1);
        startGridTwo.load();
    }
})

var picker3 = $('#dateTime1').datetimepicker({
    format: 'YYYY-MM-DD',
    locale: moment.locale('zh-cn')
}).on('dp.hide', function (e) {
    var result = new moment(e.date).format('YYYY-MM-DD');
    if (result && !angular.isUndefined(result)) {
        $$scope.trItem.startDate = result;
        $$scope.$apply();
    }
})

var picker4 = $('#dateTime2').datetimepicker({
    format: 'YYYY-MM-DD',
    locale: moment.locale('zh-cn')
}).on('dp.hide', function (e) {
    var result = new moment(e.date).format('YYYY-MM-DD');
    if (result && !angular.isUndefined(result)) {
        $$scope.trItem.endDate = result;
        $$scope.$apply();
    }
})

//报销 条目
$$scope.ccClassSelect = [
    // {name: "市内交通金额", code: "indoorTraffic"},
    // {name: "办公费用", code: "officeExpenses"},
    // {name: "低值易耗品金额", code: "consumable"},
    // {name: "餐费金额", code: "lunchAmount"},
    // {name: "通讯费金额", code: "communicationFee"},
    // {name: "车辆金额", code: "carFee"},
    // {name: "水电费", code: "utilities"},
    // {name: "物管费", code: "propertyManagementFee"},
    // {name: "房屋租赁费", code: "houseRent"},
    // {name: "其他租赁费", code: "elseRent"},
    // {name: "办公电脑补贴", code: "electronicFee"},
    // {name: "对外服务费", code: "externalServiceFee"},
    // {name: "对外咨询费", code: "externalConsultingFee"},
    // {name: "外聘费用", code: "externalCost"},
    // {name: "证书补贴", code: "certificateSubsides"},
    // {name: "外部培训费", code: "externalFee"},
    // {name: "礼品", code: "present"}
    {name: "市内交通金额", code: "indoorTraffic"},
    {name: "餐费", code: "lunchAmount"},
    {name: "通讯费", code: "communicationFee"},
    {name: "电脑补贴", code: "electronicFee"},
    {name: "礼品购买", code: "present"},
    {name: "证书使用费", code: "certificateSubsides"},
    // {name: "----------------------------", code: ""},
    {name: "外部服务费（使用外部服务）", code: "externalServiceFee"},
    {name: "外部咨询费（使用咨询服务）", code: "externalConsultingFee"},
    {name: "外部培训费（使用培训服务）", code: "externalFee"},
    {name: "外部聘用费用（使用聘用费用）", code: "externalCost"},
    // {name: "----------------------------", code: ""},
    {name: "低值易耗品费（行政相关费用）", code: "consumable"},
    {name: "车辆费（行政相关费用）", code: "carFee"},
    {name: "水电费（行政相关费用）", code: "utilities"},
    {name: "物管费（行政相关费用）", code: "propertyManagementFee"},
    {name: "房屋租赁费（行政相关费用）", code: "houseRent"},
    {name: "其他租赁费（行政相关费用）", code: "elseRent"},
    // {name: "----------------------------", code: ""},
    {name: "办公费用", code: "officeExpenses"},
]

$$scope.ccCompanySelect = [
    {name: "赛特斯集团", code: "STSJT"},
    {name: "赛特斯南京", code: "STSNJ"},
    {name: "赛特斯广州", code: "STSGD"},
    {name: "赛特斯北京", code: "STSBJ"},
]

//选取 可以 直接 使用 的出差单号
$CertusFormAjax.ajax("availablePolicyNumber", {}, function (res) {
    if (res.data) {
        $$scope.availablePolicyNumberSelect = res.data;
    }
})
$$scope.travelCodeChange = function (a) {
    if (a) {
        for (var j in triArray) {
            triArray[j].projectPercent = null;
        }
        //初始化可以选取的 项目编号
        $CertusFormAjax.ajax("availableProjNumber", {travelCode: a}, function (res) {
            if (res.data) {
                $$scope.availableProjNumberSelect = res.data;
                tempOriginSelect = res.data;
            }
        })
        $$scope.triPercentDis = false;
        return;
    }
    $$scope.triPercentDis = true;

}

$$scope.addItem = function () {
    $$scope.trItem = {};
    $("#dateTime1").val("");
    $("#dateTime2").val("");
    $(".afrinfo").show();
}

function dateChange1(){
    $$scope.startDate = $("#dateTime1").val();
    $$scope.$apply();
}

function dateChange2(){
    $$scope.endDate = $("#dateTime1").val();
    $$scope.$apply();
}

$$scope.saveDraftCCBX = function () {
    $CertusJsonAjax.ajax("saveDraftCCBX", $$scope.trEntity, function (res) {
        if (res.data) {
            if (res.data == "success") {
                window.history.back();
            }
        }
    })
}

$CertusJsonAjax.ajax("queryCCBXLCProcessTrace", {
    "processInstanceId": $CertusJsonAjax.getProInstanceId(),
    "stepInstanceId": $CertusJsonAjax.getStepInstanceId()
}, function (res) {
    ;
    $$scope.processCCBXTrace = res.data;
})

$$scope.startCCBXLc = function () {
    $$scope.trEntity.tmpProcessInstanceId = $CertusJsonAjax.getProInstanceId();
    $$scope.trEntity.tmpStepInstanceId = $CertusJsonAjax.getStepInstanceId();
    $$scope.trEntity.expenseType = 'cashType';
    if ($$scope.trEntity.chargeAgainest || $$scope.trEntity.borrowCode) {
        if ($$scope.trEntity.chargeAgainest && $$scope.trEntity.borrowCode) {

        } else {
            layer.msg("请补全冲销信息");
            return;
        }
    }
    $CertusJsonAjax.ajax("startCCBXLc", $$scope.trEntity, function (res) {

        if (res.data) {
            if (res.data.succed == "success") {
                nextApprovalManView(res.data.tip);
                window.history.back();
                return;
            }
            layer.msg(res.data.succed);
        }
    })
}

function isDifferentPercent(element) {
    return element.projId != projIdNow;
}

$$scope.percentSubmit = function(a){
    projIdNow = $$scope.triPercent.projId;
    if ($$scope.userProjSelect2) {
        //如果 目前的项目名超过 俩个 则 提示
        var length = $$scope.userProjSelect2.length;
        nowProjName = $$scope.triPercent.projName;

        if(nowProjName&&nowProjName.replace(/^\s+/, '').replace(/\s+$/, '') != ''){
            $$scope.userProjSelect2 = $$scope.userProjSelect2.filter(isSaveProjName);
            if ($$scope.userProjSelect2) {
                if ($$scope.userProjSelect2.length > 1) {
                    layer.msg("项目名称 不唯一 ");
                    return;
                } else if ($$scope.userProjSelect2.length == 1) {
                    $$scope.triPercent.projId = $$scope.userProjSelect2[0].projId;
                }else if($$scope.userProjSelect2.length < 1){
                    layer.msg("请输入正确项目名称");
                    return;
                }
            }
        }else{
            layer.msg("请填写正确项目名称");
        }
        for (var ii in $$scope.availableProjNumberSelect) {
            if ($$scope.availableProjNumberSelect[ii].code == a) {
                $$scope.triPercent.projName = $$scope.availableProjNumberSelect[ii].name
            }
        }
        if (nowprojectPercent) {
            for (var i in nowprojectPercent) {
                if (nowprojectPercent[i].projId == projIdNow) {
                    for (var h in triArray) {
                        if (triArray[h].triCode == codeNow) {
                            triArray[h].originSurplus += nowprojectPercent[i].money;
                        }
                    }
                    nowprojectPercent[i] = $$scope.triPercent;
                }
            }
        }
        nowprojectPercent = nowprojectPercent.filter(isDifferentPercent);
        nowprojectPercent.push($$scope.triPercent);

        for (var h in triArray) {
            if (triArray[h].triCode == codeNow) {
                triArray[h].projectPercent = nowprojectPercent;
                // triArray[h].originSurplus -= $$scope.triPercent.money
            }
        }
        surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
        $(".haddpro").hide();
    }
}

// $$scope.percentSubmit = function (a) {
//     projIdNow = a;
//     for (var ii in $$scope.availableProjNumberSelect) {
//         if ($$scope.availableProjNumberSelect[ii].code == a) {
//             $$scope.triPercent.projName = $$scope.availableProjNumberSelect[ii].name
//         }
//     }
//     if (nowprojectPercent) {
//         for (var i in nowprojectPercent) {
//             if (nowprojectPercent[i].projId == a) {
//                 nowprojectPercent[i] = $$scope.triPercent;
//             }
//         }
//
//         nowprojectPercent = nowprojectPercent.filter(isDifferentPercent);
//         nowprojectPercent.push($$scope.triPercent);
//         for (var h in triArray) {
//             if (triArray[h].triCode == codeNow) {
//                 triArray[h].projectPercent = nowprojectPercent;
//                 triArray[h].originSurplus -= $$scope.triPercent.money
//             }
//         }
//     }
//     $(".haddpro").hide();
// }

$$scope.disDraft = function () {
    $("#yourModal").modal('show');
}

$CertusFormAjax.ajax("belongCompanyName", {}, function (res) {
    var companyCode = res.data;
    if (companyCode == "STSJT") {
        $$scope.belongCompanyName = "赛特斯集团";
    } else if (companyCode == "STSGD") {
        $$scope.belongCompanyName = "赛特斯广东";
    } else if (companyCode == "HFKJ") {
        $$scope.belongCompanyName = "浩方科技";
    } else if (companyCode == "HFXX") {
        $$scope.belongCompanyName = "浩方信息";
    } else if (companyCode == "STSBJ") {
        $$scope.belongCompanyName = "赛特斯北京";
    } else if (companyCode == "STSNJ") {
        $$scope.belongCompanyName = "赛特斯南京";
    }
})

$$scope.itemSubmit = function () {

    if (certusValidateNotnullPolyfill()) {
        var changeTr = {};

        $$scope.trItem.trCompanyName = $$scope.belongCompanyName;
        //补足 name
        for (var j in $$scope.ccCompanySelect) {
            if ($$scope.ccCompanySelect[j].code == $$scope.trItem.trCompanyCode) {
                $$scope.trItem.trCompanyName = $$scope.ccCompanySelect[j].name;
            }
        }

        /*{name: "水电费", code: "utilities"},
         {name: "物管费", code: "propertyManagementFee"},
         {name: "房屋租赁费", code: "houseRent"},
         {name: "其他租赁费", code: "elseRent"},
         {name: "办公电脑补贴", code: "electronicFee"},
         {name: "对外服务费", code: "externalServiceFee"},
         {name: "对外咨询费", code: "externalConsultingFee"},
         {name: "外聘费用", code: "externalCost"},
         {name: "证书补贴", code: "certificateSubsides"},
         {name: "外部培训费", code: "externalFee"},
         {name: "礼品", code: "present"}*/
        for (var k in $$scope.ccClassSelect) {
            if ($$scope.ccClassSelect[k].code == $$scope.trItem.triClassCode) {
                $$scope.trItem.triClassName = $$scope.ccClassSelect[j].name;
                // if (
                //     $$scope.trItem.triClassCode == 'utilities' ||
                //     $$scope.trItem.triClassCode == 'propertyManagementFee' ||
                //     $$scope.trItem.triClassCode == 'houseRent' ||
                //     $$scope.trItem.triClassCode == 'elseRent' ||
                //     $$scope.trItem.triClassCode == 'electronicFee' ||
                //     $$scope.trItem.triClassCode == 'externalServiceFee' ||
                //     $$scope.trItem.triClassCode == 'externalConsultingFee' ||
                //     $$scope.trItem.triClassCode == 'externalCost' ||
                //     $$scope.trItem.triClassCode == 'certificateSubsides' ||
                //     $$scope.trItem.triClassCode == 'externalFee' ||
                //     $$scope.trItem.triClassCode == 'present') {
                //     $$scope.trItem.triClassCode = 'elseFee'
                // }

                {

                }
            }
        }
        if ($$scope.trItem.projectPercent) {
            $$scope.trItem.originSurplus = $$scope.trItem.money;
            for (var i in $$scope.trItem.projectPercent) {
                $$scope.trItem.originSurplus -= $$scope.trItem.projectPercent[i].money;
            }
        }
        ;
        if ($$scope.trItem.originSurplus < 0) {
            layer.msg("目前项目分配钱，已经超过现有的总和");
            return;
        }
        $$scope.trItem.trCode = $$scope.trEntity.trCode;
        $$scope.trItem.triCode = "tri-" + new Date().getTime() + Math.floor(Math.random() * 10000);
        codeNow = $$scope.trItem.triCode;
        triArray = triArray.filter(isDifferent);
        triArray.push($$scope.trItem);
        //算出总金额
        $$scope.trEntity.totalAmount = 0;
        for (var b in triArray) {
            $$scope.trEntity.totalAmount += triArray[b].money;
        }
        startGridTwo.exhibitDatas = triArray;
        $$scope.trEntity.items = triArray;
        startGridTwo.refresh(false);

        $(".afrinfo").hide();
    }
}


$$scope.closeAddItem = function () {
    $(".afrinfo").hide();
}

startGridTwo = $.fn.dlshouwen.grid.init(afrOption);
startGridTwo.exhibitDatas = triArray;

$$scope.$watch("triPercent.projName", function (newValue, old, scope) {
    if (old && newValue) {
        if (newValue.indexOf(old) > -1) {
            nowProjName = newValue;
            scope.userProjSelect2 = scope.userProjSelect2.filter(isSaveProjName);
            if (scope.userProjSelect2.length) {
                if (scope.userProjSelect2.length == 1) {
                    scope.triPercent.projId = scope.userProjSelect2[0].projId;
                    scope.triPercent.projName = scope.userProjSelect2[0].projName;
                }
            }
            if(!scope.userProjSelect2 || scope.userProjSelect2.length == 0){
                scope.triPercent.projId = "";
                scope.triPercent.projName = "";
            }
            return;
        }
    }

    //直接去数据库 查询
    $CertusFormAjax.ajax("relatedProj", {param: newValue}, function (res) {
        scope.userProjSelect2 = res.data;
        if (scope.userProjSelect2.length) {

            if (scope.userProjSelect2.length == 1) {
                scope.triPercent.projId = scope.userProjSelect2[0].projId + "";
                scope.triPercent.projName = scope.userProjSelect2[0].projName;
            }
        }
    })
})

$$scope.$watch("triPercent.money", function (newValue, oldValue, scope) {
    if(newValue){
        surplusMet(triArray,codeNow,newValue,$CertusJsonAjax,$$scope);
    }else{
        surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
    }
});


$$scope.editPercent = function (projId) {
    for (var i in triArray) {
        if (triArray[i].triCode == codeNow) {
            for (var j in triArray[i].projectPercent) {
                $$scope.triPercent = triArray[i].projectPercent[j];
                $$scope.triPercent.projId = projId + "";
                // triArray[i].originSurplus += triArray[i].projectPercent[j].money;
                surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
                $("#myModal").modal('hide');
                $(".haddpro").show();
            }
        }
    }
}

$$scope.delPercent = function (projId) {

    // layer.confirm('确认删除此数据？', {
    //     btn: ['确认', '取消'] //按钮
    // }, function () {
        for (var j in triArray) {
            if (triArray[j].triCode == codeNow) {
                for (var i in triArray[j].projectPercent) {
                    if (triArray[j].projectPercent[i].projId == projId) {
                        projIdNow == projId;
                        // triArray[j].originSurplus += triArray[j].projectPercent[i].money;
                        surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
                        triArray[j].projectPercent = triArray[j].projectPercent.filter(isDiffPercent);
                        $$scope.nowprojectPercents = triArray[j].projectPercent;
                        return;
                    }
                }
            }
        }
    //     layer.msg('删除成功');
    // });

    
}


function delTriItem(triCode) {

    codeNow = triCode;
    for (var i in triArray) {
        if (triArray[i].triCode == triCode) {
            $$scope.trEntity.totalAmount -= parseFloat(triArray[i].money);
            triArray = triArray.filter(isDifferent);
            startGridTwo.exhibitDatas = triArray;
            startGridTwo.refresh(false);
            $$scope.trEntity.items = triArray;
            $$scope.$apply()
        }
    }
}

function disMyModal(triCode) {
    ;
    for (var i in triArray) {
        if (triArray[i].triCode == triCode) {
            if (triArray[i].projectPercent) {
                codeNow = triCode;
                nowprojectPercent = triArray[i].projectPercent;
                $$scope.trItem = triArray[i];
                $$scope.nowprojectPercents = nowprojectPercent;
                $$scope.$apply();
                $("#myModal").modal('show');
                // $(".haddpro").show();
            }
        }
    }
}

function isDifferentSelect(element) {
    return element.code != projIdNow;
}

function addPro(triCode) {

    for (var i in triArray) {

        if (triArray[i].triCode == triCode) {
            codeNow = triCode;
            $$scope.triPercent = {};
            // triArray[i].originSurplus = triArray[i].money;
            if (!triArray[i].projectPercent) {
                triArray[i].projectPercent = new Array();
                $$scope.availableProjNumberSelect = tempOriginSelect;
            } else {
                var tempSelect = tempOriginSelect;
                for (var j in triArray[i].projectPercent) {
                    // triArray[i].originSurplus -= triArray[i].projectPercent[j].money
                    projIdNow = triArray[i].projectPercent[j].projId;
                    if (tempOriginSelect) {
                        tempSelect = tempSelect.filter(isDifferentSelect);
                    }
                }
                $$scope.availableProjNumberSelect = tempSelect;
            }
            // $$scope.triPercent.surplus = triArray[i].originSurplus;
            nowprojectPercent = triArray[i].projectPercent
            $$scope.$apply();
            surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
            $(".haddpro").show();
        }
    }
}

function haddpro() {
    $(".haddpro").hide();
}

function editCC(triCode) {
    for (var i in triArray) {
        if (triArray[i].triCode == triCode) {
            $$scope.trItem = triArray[i];
            $$scope.trItem.startDate = $$filter("date")($$scope.trItem.startDate, "yyyy-MM-dd");
            $$scope.trItem.endDate = $$filter("date")($$scope.trItem.endDate, "yyyy-MM-dd");

            $$scope.$apply();
        }
        $(".afrinfo").show();
    }
}

function isDifferent(element) {
    return element.triCode != codeNow;
}

function isDiffPercent(element) {
    return element.projId != projIdNow;
}




